% Copyright (c) 2013-2014, Cornell University
% All rights reserved.
%
% Redistribution and use in source and binary forms, with or without
% modification, are permitted provided that the following conditions are met:
%
%     * Redistributions of source code must retain the above copyright notice,
%       this list of conditions and the following disclaimer.
%     * Redistributions in binary form must reproduce the above copyright
%       notice, this list of conditions and the following disclaimer in the
%       documentation and/or other materials provided with the distribution.
%     * Neither the name of HyperDex nor the names of its contributors may be
%       used to endorse or promote products derived from this software without
%       specific prior written permission.
%
% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
% AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
% IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
% DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
% FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
% DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
% SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
% CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
% OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
% OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

% This LaTeX file is generated by bindings/c.py

%%%%%%%%%%%%%%%%%%%% read_only %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{read\_only}}
\label{api:c:read_only}
\index{read\_only!C API}
\input{\topdir/admin/fragments/read_only}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_read_only(struct hyperdex_admin* admin,
        int ro,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{int ro}\\
\input{\topdir/c/admin/fragments/in_asynccall_readonly}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% wait_until_stable %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{wait\_until\_stable}}
\label{api:c:wait_until_stable}
\index{wait\_until\_stable!C API}
\input{\topdir/admin/fragments/wait_until_stable}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_wait_until_stable(struct hyperdex_admin* admin,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% fault_tolerance %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{fault\_tolerance}}
\label{api:c:fault_tolerance}
\index{fault\_tolerance!C API}
\input{\topdir/admin/fragments/fault_tolerance}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_fault_tolerance(struct hyperdex_admin* admin,
        const char* space,
        uint64_t ft,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{const char* space}\\
\input{\topdir/c/admin/fragments/in_asynccall_spacename}
\item \code{uint64\_t ft}\\
\input{\topdir/c/admin/fragments/in_asynccall_faulttolerance}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% validate_space %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{validate\_space}}
\label{api:c:validate_space}
\index{validate\_space!C API}
\input{\topdir/admin/fragments/validate_space}

\paragraph{Definition:}
\begin{ccode}
int hyperdex_admin_validate_space(struct hyperdex_admin* admin,
        const char* description,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_synccall_structadmin}
\item \code{const char* description}\\
\input{\topdir/c/admin/fragments/in_synccall_spacedescription}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_synccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% add_space %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{add\_space}}
\label{api:c:add_space}
\index{add\_space!C API}
\input{\topdir/admin/fragments/add_space}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_add_space(struct hyperdex_admin* admin,
        const char* description,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{const char* description}\\
\input{\topdir/c/admin/fragments/in_asynccall_spacedescription}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% rm_space %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{rm\_space}}
\label{api:c:rm_space}
\index{rm\_space!C API}
\input{\topdir/admin/fragments/rm_space}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_rm_space(struct hyperdex_admin* admin,
        const char* space,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{const char* space}\\
\input{\topdir/c/admin/fragments/in_asynccall_spacename}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% mv_space %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{mv\_space}}
\label{api:c:mv_space}
\index{mv\_space!C API}
\input{\topdir/admin/fragments/mv_space}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_mv_space(struct hyperdex_admin* admin,
        const char* source,
        const char* target,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{const char* source}\\
\input{\topdir/c/admin/fragments/in_asynccall_spacenamesource}
\item \code{const char* target}\\
\input{\topdir/c/admin/fragments/in_asynccall_spacenametarget}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% list_spaces %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{list\_spaces}}
\label{api:c:list_spaces}
\index{list\_spaces!C API}
\input{\topdir/admin/fragments/list_spaces}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_list_spaces(struct hyperdex_admin* admin,
        enum hyperdex_admin_returncode* status,
        const char** spaces);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\item \code{const char** spaces}\\
\input{\topdir/c/admin/fragments/out_asynccall_spacelist}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% list_indices %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{list\_indices}}
\label{api:c:list_indices}
\index{list\_indices!C API}
\input{\topdir/admin/fragments/list_indices}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_list_indices(struct hyperdex_admin* admin,
        const char* space,
        enum hyperdex_admin_returncode* status,
        const char** indexes);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{const char* space}\\
\input{\topdir/c/admin/fragments/in_asynccall_spacename}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\item \code{const char** indexes}\\
\input{\topdir/c/admin/fragments/out_asynccall_indexlist}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% list_subspaces %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{list\_subspaces}}
\label{api:c:list_subspaces}
\index{list\_subspaces!C API}
\input{\topdir/admin/fragments/list_subspaces}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_list_subspaces(struct hyperdex_admin* admin,
        const char* space,
        enum hyperdex_admin_returncode* status,
        const char** subspaces);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{const char* space}\\
\input{\topdir/c/admin/fragments/in_asynccall_spacename}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\item \code{const char** subspaces}\\
\input{\topdir/c/admin/fragments/out_asynccall_subspacelist}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% add_index %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{add\_index}}
\label{api:c:add_index}
\index{add\_index!C API}
\input{\topdir/admin/fragments/add_index}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_add_index(struct hyperdex_admin* admin,
        const char* space,
        const char* attribute,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{const char* space}\\
\input{\topdir/c/admin/fragments/in_asynccall_spacename}
\item \code{const char* attribute}\\
\input{\topdir/c/admin/fragments/in_asynccall_attributename}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% rm_index %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{rm\_index}}
\label{api:c:rm_index}
\index{rm\_index!C API}
\input{\topdir/admin/fragments/rm_index}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_rm_index(struct hyperdex_admin* admin,
        uint64_t idxid,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{uint64\_t idxid}\\
\input{\topdir/c/admin/fragments/in_asynccall_indexid}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% server_register %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{server\_register}}
\label{api:c:server_register}
\index{server\_register!C API}
\input{\topdir/admin/fragments/server_register}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_server_register(struct hyperdex_admin* admin,
        uint64_t token,
        const char* address,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{uint64\_t token}\\
\input{\topdir/c/admin/fragments/in_asynccall_token}
\item \code{const char* address}\\
\input{\topdir/c/admin/fragments/in_asynccall_address}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% server_online %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{server\_online}}
\label{api:c:server_online}
\index{server\_online!C API}
\input{\topdir/admin/fragments/server_online}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_server_online(struct hyperdex_admin* admin,
        uint64_t token,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{uint64\_t token}\\
\input{\topdir/c/admin/fragments/in_asynccall_token}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% server_offline %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{server\_offline}}
\label{api:c:server_offline}
\index{server\_offline!C API}
\input{\topdir/admin/fragments/server_offline}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_server_offline(struct hyperdex_admin* admin,
        uint64_t token,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{uint64\_t token}\\
\input{\topdir/c/admin/fragments/in_asynccall_token}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% server_forget %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{server\_forget}}
\label{api:c:server_forget}
\index{server\_forget!C API}
\input{\topdir/admin/fragments/server_forget}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_server_forget(struct hyperdex_admin* admin,
        uint64_t token,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{uint64\_t token}\\
\input{\topdir/c/admin/fragments/in_asynccall_token}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% server_kill %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{server\_kill}}
\label{api:c:server_kill}
\index{server\_kill!C API}
\input{\topdir/admin/fragments/server_kill}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_server_kill(struct hyperdex_admin* admin,
        uint64_t token,
        enum hyperdex_admin_returncode* status);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{uint64\_t token}\\
\input{\topdir/c/admin/fragments/in_asynccall_token}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% backup %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{backup}}
\label{api:c:backup}
\index{backup!C API}
\input{\topdir/admin/fragments/backup}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_backup(struct hyperdex_admin* admin,
        const char* backup,
        enum hyperdex_admin_returncode* status,
        const char** backups);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\item \code{const char* backup}\\
\input{\topdir/c/admin/fragments/in_asynccall_backupname}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\item \code{const char** backups}\\
\input{\topdir/c/admin/fragments/out_asynccall_backuplist}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% enable_perf_counters %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{enable\_perf\_counters}}
\label{api:c:enable_perf_counters}
\index{enable\_perf\_counters!C API}
\input{\topdir/admin/fragments/enable_perf_counters}

\paragraph{Definition:}
\begin{ccode}
int64_t hyperdex_admin_enable_perf_counters(struct hyperdex_admin* admin,
        enum hyperdex_admin_returncode* status,
        struct hyperdex_admin_perf_counter* pc);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_asynccall_structadmin}
\end{itemize}

\paragraph{Returns:}
\begin{itemize}[noitemsep]
\item \code{enum hyperdex\_admin\_returncode* status}\\
\input{\topdir/c/admin/fragments/out_asynccall_adminstatus}
\item \code{struct hyperdex\_admin\_perf\_counter* pc}\\
\input{\topdir/c/admin/fragments/out_asynccall_performancecounters}
\end{itemize}

%%%%%%%%%%%%%%%%%%%% disable_perf_counters %%%%%%%%%%%%%%%%%%%%
\pagebreak
\subsection{\code{disable\_perf\_counters}}
\label{api:c:disable_perf_counters}
\index{disable\_perf\_counters!C API}
\input{\topdir/admin/fragments/disable_perf_counters}

\paragraph{Definition:}
\begin{ccode}
void hyperdex_admin_disable_perf_counters(struct hyperdex_admin* admin);
\end{ccode}

\paragraph{Parameters:}
\begin{itemize}[noitemsep]
\item \code{struct hyperdex\_admin* admin}\\
\input{\topdir/c/admin/fragments/in_nofailcall_structadmin}
\end{itemize}

\paragraph{Returns:}
Nothing